﻿using SIR.Common;
using System.Collections.Generic;

namespace SIR.Entities.Interfaces
{
	/// <summary>
	/// Represents a folder containing images and subfolders
	/// </summary>
	public interface IFolder : IEntity
	{
		/// <summary>
		/// Gets or sets the name of the folder
		/// </summary>
		string Name { get; set; }
		/// <summary>
		/// Gets or sets the user id for the folder
		/// </summary>
		long UserId { get; set; }
		/// <summary>
		/// Gets or sets the parent folder id for the folder
		/// </summary>
		long ParentFolderId { get; set; }
		/// <summary>
		/// Gets the images contained within the folder
		/// </summary>
		IReadOnlyCollection<IImage> Images { get; }
		/// <summary>
		/// Gets the subfolders contained within the folder
		/// </summary>
		IReadOnlyCollection<IFolder> Folders { get; }
		/// <summary>
		/// Gets the number of items contained within the folder
		/// </summary>
		/// <returns>The number of images</returns>
		uint ItemsCount();
		/// <summary>
		/// Gets the number of images contained within this folder and all folders underneath it
		/// </summary>
		/// <returns>The number of images</returns>
		uint GetNumberOfImagesInTree();
		/// <summary>
		/// Gets whether or not the image is set to private
		/// </summary>
		bool IsPrivate { get; }
		/// <summary>
		/// Gets whether ot not the parent folder is private
		/// </summary>
		bool IsParentFolderPrivate { get; }
	}
}

